package cn.tedu.api;

import java.math.BigDecimal;
import java.util.Scanner;

/*用于解决浮点数运算不精确的问题*/
public class TestBigDecimal {
    public static void main(String[] args) {



        //f1();
        f2();
    }

    private static void f2() {
        System.out.println("请输入运算的第一个数");
        double a = new Scanner(System.in).nextDouble();
        System.out.println("请输入运算的第二个数");
        double b = new Scanner(System.in).nextDouble();

        /*最好不要使用double作为构造函数的参数类型,不然还会有不精确的现象,有坑!
        * 最好使用重载的,参数类型为String类型的变量来保存结果*/
        BigDecimal bd1=new BigDecimal(a+"");
        BigDecimal bd2=new BigDecimal(b+"");

        BigDecimal bd3;
        bd3=bd1.add(bd2);
        System.out.println(bd3);
        bd3=bd1.subtract(bd2);
        System.out.println(bd3);
        bd3=bd1.multiply(bd2);
        System.out.println(bd3);
        /*除法运算,除不尽是会抛出异常;ArithmeticException
        * 我们应该使用重载的divide(m,n,o)
        * m是要除以哪个对象
        * n是除不尽时保留的位数
        * o是舍入方法,常用的是四舍五入*/
        //bd3=bd1.divide(bd2);
        bd3=bd1.divide(bd2,3,BigDecimal.ROUND_HALF_UP);
        System.out.println(bd3);

    }

    private static void f1() {
        System.out.println("请输入运算的第一个数");
        double a = new Scanner(System.in).nextDouble();
        System.out.println("请输入运算的第二个数");
        double b = new Scanner(System.in).nextDouble();

        System.out.println(a+b);
        System.out.println(a-b);
        System.out.println(a*b);
        System.out.println(a/b);
    }
}
